iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Modern Web

JS30 x 鐵人30 x MDN doc系列 第 7

[Day7] - Array Cardio part2(JS30 x 鐵人 30 x MDN)

  • 分享至 

  • xImage
  •  

今天來玩玩 Array method,並印出結果吧-趴兔

觀察 index-Start.html 的 Javascrript 部分,這次相對第四天簡單多了,一樣每題都有限制要使用哪種 Array method 完成題目需求讓你順便學到新 Array method。

  • Some and Every Checks :1、2 題使用同一組資料,要我們要判斷年紀是否大於 19 歲,但資料內的個人資料只有出生年份,所以我們要先取得現在時間的年份並存在一個變數中,去扣掉出生年份才能換算每個人的年紀,這裡使用到前幾天的Date()物件並改用Date.prototype.getFullYear()
const people = [
  { name: "Wes", year: 1988 },
  { name: "Kait", year: 1986 },
  { name: "Irv", year: 1970 },
  { name: "Lux", year: 2015 },
];
const nowYear = new Date().getFullYear();
  1. Is at least one person 19 or older?(是否有人大於 19 歲)

    這題使用到Array.prototype.some(),這個 Array method 是用來判斷陣列中的元素只要有任何一項符合判斷式即會回傳 true,有點像 Array 版的Logical OR (||)

const isSomeAdult = people.some((person) => nowYear - person.year > 19);
console.log({ isSomeAdult });
  1. is everyone 19 or older?

    這題使用到Array.prototype.every(),這個 Array method 是用來判斷陣列中的所有元素都要符合判斷式才會回傳 true,有點像 Array 版的Logical AND (&&)

const isAllAdult = people.every((person) => nowYear - person.year > 19);
console.log({ isAllAdult });
  • find and findIndex :3、4、5 題使用同一組資料,要我們從資料中到到訊息的id符合823423的項目及 index,最後刪除它,我們先宣告變數targetID來儲存這個會重複使用的 id 值
const comments = [
  { text: "Love this!", id: 523423 },
  { text: "Super good", id: 823423 },
  { text: "You are the best", id: 2039842 },
  { text: "Ramen is my fav food ever", id: 123523 },
  { text: "Nice Nice Nice!", id: 542328 },
];

const targetID = 823423;
  1. Find the comment with this ID(依據 id 找到指定訊息)
    這題使用到Array.prototype.find()這個 Array method 來取得符合判斷式的元素,會回傳整個元素值,但只會回傳第一個找到的。
const result = comments.find((comment) => comment.id === targetID);
console.log(result);
  1. Find the comment index with this ID(依據 id 找到指定訊息的索引值)
    這題使用到Array.prototype.findIndex()如字面上意思這個 Array method 來取得符合判斷式的索引值也只會回傳第一個找到的。
const targetIndex = comments.findIndex((comment) => comment.id === targetID);
console.log({ targetIndex });
  1. Delete the comment with the ID of 82342(依據 id 刪除指定訊息)
    這題使用到Array.prototype.slice(),第一個參數我們傳入前面找到的指定訊息位置(targetIndex),第二個參數輸入 1,代表我們要從這個陣列的 targetIndex 刪除 1 項,接著印出 comments 可以發現這則訊息已經從原始資料中刪除。
comments.splice(targetIndex, 1);
console.log(comments);

👉Github Demo 頁面 👈

👉 好想工作室 15th 鐵人賽看板 👈

參考資料

  1. Javascript 30 官網
    https://javascript30.com/
  2. MDN 官網
    https://developer.mozilla.org/en-US/
  3. Object Literals Using Object Property Shorthand
    https://javascript.plainenglish.io/object-literals-using-object-property-shorthand-6360825c60ef

上一篇
[Day6] - Type Ahead(JS30 x 鐵人 30 x MDN)
下一篇
[Day8] - Fun with HTML5 Canvas(JS30 x 鐵人 30 x MDN)
系列文
JS30 x 鐵人30 x MDN doc30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言